Embodiments of the inventive subject matter generally relate to the field of transaction management, and, more particularly, to management of long-lived transactions.
A long-lived transactions (LLT) is a transaction that, by design, consists of multiple database transactions, or sub-transactions, that must all be performed in a sequence (e.g., serially, in parallel, a combination, etc.). The sequence of sub-transactions that make up the LLT are grouped to achieve a single atomic result for the LLT. LLTs are sometimes referred to as “sagas.” The sub-transactions are also called phase functions or phase transactions because they represent phases in the sequence for the LLT. Currently, some management systems control LLTs by generating a compensating transaction for each sub-transaction within the LLT and storing data for the compensating transactions in a database to be used at a later point when recovering the LLT. When there is a problem, then the code undoes each of the operations using the stored data. Generating compensating transactions can add to the overhead of the management system, which can make the LLT inefficient and time-consuming when performed for each of the operations. Currently, some management systems also separately track successful completion points in a flow of the LLT, after each successfully completed sub-transaction. When the LLT encounters a problem and needs to recover, the management system returns to the last successful completion point. Tracking successful completion points, however, can also add to the overhead of the management system which can be inefficient and time-consuming.